const http = require('http')
const fs = require('fs')
const nunjucks = require('nunjucks')

// 创建web服务
const app = http.createServer()

// 获取数据 商品分类，商品
const categories = require("./data/categories.json")
const items = require("./data/items.json")

// 路由表 
const routesMap = new Map()

// 配置路由  req.url
// 首页
routesMap.set("/", async (req, res) => {
  // 读取文件 template/index.html
  const tpl = fs.readFileSync("./template/index.html").toString()
  // 渲染模板 nunjucks.renderString(),并将渲染后的数据发送给客户端
  res.write(nunjucks.renderString(tpl, { categories, items }))

})


app.on("request", async (req, res) => {
  // 获取url
  const url = req.url
  console.log(url)
  // 处理静态文件 在 static 文件加下
  if (url.startsWith("/public")) {
    // 读取静态文件 css  images 内容
    const content = fs.readFileSync(`.${url}`)
    res.write(content)
  }

  // 路由表中获取url对应的函数
  const routeHandle = routesMap.get(url)
  // 判断路由表中是否存在路由，如果存在，正常渲染，否则，提示404
  if (routeHandle) {
    await routeHandle(req, res)
  } else {
    res.statusCode = 404
    res.end("页面出游了！")
  }
  res.end()
})

// 监听端口
app.listen(8000, function () {
  console.log("runnin on 8000")
})
